package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.table.AbstractTableModel;

import modelo.Datos;

import modelo.Producto;

import vista.DlgActualizarProductos;

public class ContActualizarProductos {
	private DlgActualizarProductos dlg = null;
	private ArrayList<Producto> lista = null;
	private AbstractTableModel tmodelo = null;
	private JFrame frm;
	
	public ContActualizarProductos() {
	}
	
	public void mostrar(JFrame frame) {
		frm = frame;
		
		dlg = new DlgActualizarProductos(frame, this);
		dlg.setLocationRelativeTo(null);
		dlg.setVisible(true);
		
		lista = Datos.getInstancia().getProductos().productosGeneral();
		
		tmodelo = new AbstractTableModel() {
			private static final long serialVersionUID = 1L;

			@Override
			public int getColumnCount() {
				return 3;
			}

			@Override
			public String getColumnName(int col) {
				switch (col) {
				case 0: return "Producto";
				case 1: return "Categoria";
				case 2: return "Precio";
				}
				return null;
			}

			@Override
			public int getRowCount() {
				return lista.size();
			}

			@Override
			public Object getValueAt(int row, int col) {
				Producto obj = lista.get(row); 
				switch (col) {
				case 0: return obj.getNombre();
				case 1: return obj.getCategoria().getNombre();
				case 2: return String.format("%.2f", obj.getPrecio());
				}
				return null;
			}
		};
		
		dlg.getTblProductos().setModel(tmodelo);
		
		dlg.getBtAnadir().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				ContProducto cont = new ContProducto();
				cont.mostrarAnadir(frm);
				lista = Datos.getInstancia().getProductos().productosGeneral();
				tmodelo.fireTableStructureChanged();
			}
		});
		
		dlg.getBtModificar().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				ContProducto cont = new ContProducto();
				int i = dlg.getTblProductos().getSelectedRow();
				if (i >= 0) {
					cont.mostrarModificar(frm, lista.get(i));
					tmodelo.fireTableDataChanged();
				} else
					dlg.mostrarMensaje("Seleccione un producto.");
			}
		});
		
		dlg.getBtSalir().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				dlg.dispose();
			}
		});
	}
}
